package org.hawk.gwt.ppc.introspection;

import java.util.List;

/**
 * Represents member that can be call from java code (e.g. constructor or method).
 * 
 * @author alex.bereznevatiy@gmail.com
 *
 */
public interface JavaCallableMember extends JavaScope, JavaParameterizable {
	/**
	 * @return <code>true</code> if this method contains variable length parameter
	 */
	boolean isVarArgs();

	/**
	 * @return unmodifiable list of parameters types of this method
	 */
	List<JavaTypeScope> getParametersTypes();
	
	/**
	 * @return generic type parameters of this method
	 */
	List<JavaTypeScope> getGenericParameterTypes();
	
	/**
	 * @return unique signature of this method in the class
	 */
	String getSignature();
}
